home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_02_04 / 2n04019b < prev    next >
Text File  |  1991-02-09  |  3KB  |  88 lines

  1.  
  2. /*
  3.  *  MULTTERM.C Copyright (C) 1990 by Mark R. Nelson
  4.  *
  5.  * This program uses a Stargate Technologies Plus 8 multiport board to set
  6.  * up four independent terminal sessions.  Four serial ports are logically
  7.  * connected to four windows.  The cursor will be in the active window,
  8.  * and any keyboard input will be directed out through the port connected
  9.  * with that window.
  10.  */
  11. #include <stdio.h>
  12. #include <stdlib.h>
  13. #include "video.h"
  14. #include "keys.h"
  15. #include "com.h"
  16.  
  17. WINDOW *windows[4];
  18. BOARD *board;
  19.  
  20. void main()
  21. {
  22.     int key;
  23.     int window=0;
  24.     int c;
  25.     int i;
  26. /*
  27.  * The following four lines of code open up four windows on the screen.
  28.  */
  29.     windows[3] = window_open(13,41,37,10);
  30.     windows[2] = window_open(13,1,37,10);
  31.     windows[1] = window_open(1,41,37,10);
  32.     windows[0] = window_open(1,1,37,10);
  33. /*
  34.  * Next, the board is opened, followed by the four ports.
  35.  */
  36.     board = board_open( 0x580, 11 );
  37.     for ( i=0 ; i<4 ; i++ ) {
  38.    port_open( board, 0x180 + (i*8), (char) 1 << i );
  39.    port_set( board->ports[i], 19200L, 'N', 8, 1 );
  40.     }
  41. /*
  42.  * The program sits in this loop until the user hits the Escape key
  43.  * to exit.  Each port is polled for input characters.  All characters
  44.  * are dumped out to the appropriate window.  Finally, the keyboard is
  45.  * checked for keyboard input, and appropriate action is taken on
  46.  * keystrokes.
  47.  */
  48.     for ( ; ; ) {
  49.    for ( i = 0 ; i < 4 ; i ++ )
  50.        while ( (c = port_getc( board->ports[i] )) > 1 )
  51.            window_putc( windows[ i ], (char) c );
  52. /*
  53.  * A -1 from getkey means no key is ready.  A 27 is the escape key,
  54.  * which means exit the program.  The four function keys cause one of
  55.  * the four windows to be selected.  Finally, any other key is sent out
  56.  * through the port connected to the active window.
  57.  */
  58.    key = getkey();
  59.    switch ( key ) {
  60.        case -1 :
  61.            break;
  62.        case 27 :
  63.            board_close( board );
  64.            exit(0);
  65.        case F1 :
  66.            window_select( windows[0] );
  67.            window=0;
  68.            break;
  69.        case F2 :
  70.            window_select( windows[1] );
  71.            window=1;
  72.            break;
  73.        case F3 :
  74.            window_select( windows[2] );
  75.            window=2;
  76.            break;
  77.        case F4 :
  78.            window_select( windows[3] );
  79.            window=3;
  80.            break;
  81.        default :
  82.            port_putc( board->ports[window], (char) key );
  83.            break;
  84.    }
  85.     }
  86. }
  87.  
  88.